/**********************
 kc.h
**********************/
#include "defs.h"

#ifndef _kc_
#define _kc_

//flags para funciones de IO

#define O_NONBLOCK 128 //llamada no bloqueante
#define O_CREAT 64 //si el archivo no existia, lo creo
#define O_EXCL 32 //en conjunto con O_CREAT, obliga a crear el archivo
#define O_WRITE 256 //se abre un archivo para leer o escribir

/* Muestra la imagen de inicio */
void showSplashScreen();

/* Limpia la pantalla */
void k_clear_screen();

/* Inicializa la entrada del IDT */
void setup_IDT_entry (DESCR_INT *item, byte selector, dword offset, byte access,
			 byte cero);

int atoi(char * string);

//guarda un numero de hasta len-1 digitos en str
void itoa(unsigned int num, char * str, int len);


void * memcpy(void *dest, const void *src, int count);

void * memmove(void *dest, const void *src, int count);

void * memset(void *dest, unsigned char val, int count);

int strlen(const char *str);

char * strcpy(char *dest, const char *src);

char * strncpy(char *dest, const char *src, int n);

int strcmp(const char *s1, const char *s2);

int strncmp(const char *s1, const char *s2, int n);

int isalpha(char c);

int isdigit(char c);

char toupper(char c);

char tolower(char c);


int putchar(char c);

int printstring(char * str);

int getchar();

//getchar no bloqueante. si no habia nada, devuelve 0 inmediatamente
int getcharNoBlock();

int inportb(int port);

int outportb(int port, char data );

int printf(const char * format, ...);

int sprintf(char *out, const char *format, ...);

#endif
